1. Technical Field
This application relates to managing cache pages.
2. Description of Related Art
Computer systems may include different resources used by one or more host processors. Resources and host processors in a computer system may be interconnected by one or more communication connections. These resources may include, for example, data storage devices such as those included in the data storage systems manufactured by EMC Corporation. These data storage systems may be coupled to one or more servers or host processors and provide storage services to each host processor. Multiple data storage systems from one or more different vendors may be connected and may provide common data storage for one or more host processors in a computer system.
A host processor may perform a variety of data processing tasks and operations using the data storage system. For example, a host processor may perform basic system I/O operations in connection with data requests, such as data read and write operations.
Host processor systems may store and retrieve data using a storage device containing a plurality of host interface units, disk drives, and disk interface units. The host systems access the storage device through a plurality of channels provided therewith. Host systems provide data and access control information through the channels to the storage device and the storage device provides data to the host systems also through the channels. The host systems do not address the disk drives of the storage device directly, but rather, access what appears to the host systems as a plurality of logical disk units. The logical disk units may or may not correspond to the actual disk drives. Allowing multiple host systems to access the single storage device unit allows the host systems to share data in the device. In order to facilitate sharing of the data on the device, additional software on the data storage systems may also be used.
In connection with a write operation, the data storage system may utilize a variety of different techniques such as write-back caching. With write-back caching, the data storage system may temporarily cache data received from a host within its storage cache and destage the cached data at different times onto the physical disk drives. As known in the art, the cache used in the data storage system may be implemented using a fast, volatile memory, such as RAM (random access memory).
It should be noted that a data storage system may include multiple storage processors storing data to a same set of storage devices. Each of the storage processors may have its own cache so that cached data for the write operations, as well as possibly other cached data, may be mirrored in the caches of the storage processors. Multiple storage processors may be desirable for use in providing fault tolerance, higher throughput, and the like.
In general, a storage system may use read cache to increase the speed of transactions between the storage processor and disk storage and increase the overall speed of the system. Typically, data is transferred from disk to read cache in pages or blocks of data. The data transferred typically includes data requested by the host system and optionally additional data, sometimes known as prefetched data, which is determined to be data that is most likely to be requested by the host system soon.
Usually the total size of the data on disk is significantly larger than amount of cache memory available in the system so that the cache eventually becomes full. As a result, the system must decide which pages in the cache are to be removed and which are maintained.
Due to the temporal locality of cache accesses, most pages that were accessed in the recent past are very likely to be accessed again the near future. Thus, systems typically use a least recently used (LRU) memory management process, where the page least recently accessed is removed from the cache.
A double linked list is a linked list containing a sequence of fields or nodes, each containing a data field and two link references, one pointing to a next node or data field and the other pointing to a previous node or field. For example, the pages of a buffer may include a “next pointer” to the page after the present page in the buffer and a “previous pointer” to the page before the present page in the buffer, forming a double linked list that can be traversed via the previous and next pointers.